package org.example;

public class Test5 {
    //leetcode 977 有序数组的平方 https://leetcode.cn/problems/squares-of-a-sorted-array/description/
    public int[] sortedSquares(int[] nums) {
        //因为数组中存在整数也存在负数，所以从一个方向遍历数组并且填入的话就无法保证新数组中元素的顺序是非递减，负数越小，平方就越大，正数越大，平方就越大，所以两个指针分别从数组的头和尾遍历啊
        int n = nums.length;
        int left = 0, right = n - 1, index = n - 1;
        int[] ret = new int[n];
        while (left <= right) {
            if (Math.abs(nums[left]) < Math.abs(nums[right])) {
                ret[index--] = nums[right] * nums[right];
                right--;
            }else {
                ret[index--] = nums[left] * nums[left];
                left++;
            }
        }
        return ret;
    }
}
